﻿#ifndef MAINMODEL_H
#define MAINMODEL_H
#include"StashManageModelObject.h"
#include"InventoryModel.h"
#include"ProductModel.h"
#include"OrderModel.h"
//主窗口模型数据
class MainModel :public StashManageModelObject
{
public:
	MainModel();
	~MainModel() = default;
public:
	bool modifyUserInfoMySql(const XQUserData& user);
	QList<XQUserData> userListMySql();
	//注册账号
	bool registerAccountMySql(const XQUserData& user, XQUserData* newUser=nullptr);
	bool removeUserMySql(const XQUserData& user);
public:
	//获取一个新的id
	quint64 newInventoryIDMySql();
	bool addInventoryMySql(const InventoryModel& inventory, InventoryModel* newInventory=nullptr);
	bool modifyInventoryMySql(const InventoryModel& inventory);
	bool removeInventoryMySql(const InventoryModel& inventory);
	QList<InventoryModel> InventoryListMySql();
	QList<QString> InventoryTypeList();
	QList<QString> InventoryNameList();
	QString InventoryType(const QString& name);
	quint64 currentInventory(const QString& name);
	InventoryModel inventory(const QString& name);
public:
	//获取一个新的id
	quint64 newProductIDMySql();
	bool addProductMySql(const ProductModel& product, ProductModel* newProduct = nullptr);
	bool modifyProductMySql(const ProductModel& product);
	bool removeProductMySql(const ProductModel& product);
	QList<ProductModel> ProductListMySql();
	quint64 currentProductNumber(const QString& name);
	ProductModel product(const QString& name);
public:
	//获取一个新的id
	quint64 newOrderIDMySql();
	bool addOrderMySql(const ProductModel& product, OrderModel* newOrder = nullptr);
	QList<OrderModel> OrderListMySql(const QString& account = QString());
public://数据库操作
	//数据库用户表初始化
	void initDatabaseTable();
};
#endif